package sustav.koderi;

/**
 * Koder kanal ce u nasem slucaju biti Hammingov koder.
 * 
 * Nas hammingov kode je koder 
 * @author Martin
 *
 */
public class KoderKanala {
	
	char[][] matricaG;
	
	public KoderKanala(){
		
		this.matricaG=new char[11][15];
		//Inicijaliziraj G matricu
		matricaG[0][0]='1';
		matricaG[0][1]='1';
		matricaG[0][2]='1';
		
		matricaG[1][0]='1';
		matricaG[1][3]='1';
		matricaG[1][4]='1';
		
		matricaG[2][1]='1';
		matricaG[2][3]='1';
		matricaG[2][5]='1';
		
		matricaG[3][0]='1';
		matricaG[3][1]='1';
		matricaG[3][3]='1';
		matricaG[3][6]='1';
		
		matricaG[4][0]='1';
		matricaG[4][7]='1';
		matricaG[4][8]='1';
		
		matricaG[5][1]='1';
		matricaG[5][7]='1';
		matricaG[5][9]='1';
		
		matricaG[6][0]='1';
		matricaG[6][1]='1';
		matricaG[6][7]='1';
		matricaG[6][10]='1';
		
		matricaG[7][3]='1';
		matricaG[7][7]='1';
		matricaG[7][11]='1';
		
		matricaG[8][0]='1';
		matricaG[8][3]='1';
		matricaG[8][7]='1';
		matricaG[8][12]='1';
		
		matricaG[9][1]='1';
		matricaG[9][3]='1';
		matricaG[9][7]='1';
		matricaG[9][13]='1';
		
		matricaG[10][0]='1';
		matricaG[10][1]='1';
		matricaG[10][3]='1';
		matricaG[10][7]='1';
		matricaG[10][14]='1';
		
	
	}
	
	/**
	 * Prima kodnu rjec od 11 bitova, mnozi ju s  generirajucom
	 * matricom i vraca zasticenu kodnu rjec dugu 15 bitova
	 * 
	 * @param kodnaRjec
	 * @return
	 */
	public char[] kodiraj(char[] kodnaRjec){
		char[] zasticenaKodnaRjec=new char[15];
		boolean suma=false;
		
		
		for(int i=0;i<zasticenaKodnaRjec.length;i++){
			for(int j=0;j<kodnaRjec.length;j++){
			
			int tmp1=0,tmp2=0;
			
			if(kodnaRjec[j]=='1'){
				tmp1=1;
			}
			
			if(matricaG[j][i]=='1'){
				tmp2=1;
			}
			
			if((tmp1*tmp2)==1){
				suma=!suma;
			}
				
			}
			if(suma==true){
				zasticenaKodnaRjec[i]='1';
			}
		}
		
		return zasticenaKodnaRjec;
	}
	

}
